package cate.game.table;

import cate.common.table.EContext;
import cate.common.table.EExcel;
import cate.common.table.activity.ActivityExcel;
import cate.common.table.activity.accumulatedaypay.AccumulateDayPayExcel;
import cate.common.table.activity.accumulativepay.AccumulativePayExcel;
import cate.common.table.activity.allonhook.AllOnHookExcel;
import cate.common.table.activity.battleroyale.BattleRoyaleExcel;
import cate.common.table.activity.blessing.BlessingExcel;
import cate.common.table.activity.bosstrain.BossTrainExcel;
import cate.common.table.activity.commonstarup.CommonStarUpExcel;
import cate.common.table.activity.continuousrecharge.ContinuousRechargeExcel;
import cate.common.table.activity.converthero.ConvertHeroExcel;
import cate.common.table.activity.crossrankactivity.CrossRankActivityExcel;
import cate.common.table.activity.customgrowth.CustomGrowthExcel;
import cate.common.table.activity.customwarorder.CustomWarorderExcel;
import cate.common.table.activity.cutstone.CutStoneExcel;
import cate.common.table.activity.dailygift.DailyGiftExcel;
import cate.common.table.activity.dailylogin.SevenDayLoginActivityExcel;
import cate.common.table.activity.dailyrecharge.DailyRechargeExcel;
import cate.common.table.activity.destinygate.DestinyGateExcel;
import cate.common.table.activity.diamondbowl.DiamondBowlExcel;
import cate.common.table.activity.fairygift.FairyGiftExcel;
import cate.common.table.activity.fairyreplace.FairyReplaceExcel;
import cate.common.table.activity.firstpay.SuperFirstPayExcel;
import cate.common.table.activity.foodgod.FoodGodExcel;
import cate.common.table.activity.freereplace.FreeReplaceExcel;
import cate.common.table.activity.godequip.GodEquipExcel;
import cate.common.table.activity.godtree.GodTreeExcel;
import cate.common.table.activity.goldegg.GoldEggExcel;
import cate.common.table.activity.hangdrop.HangDropActivityExcel;
import cate.common.table.activity.heroreplace.HeroReplaceExcel;
import cate.common.table.activity.heroroad.HeroRoadExcel;
import cate.common.table.activity.herotrial.HeroTrialExcel;
import cate.common.table.activity.heroup.HeroUpExcel;
import cate.common.table.activity.limitback.LimitBackExcel;
import cate.common.table.activity.limitshopactivity.LimitShopActivityExcel;
import cate.common.table.activity.lostdreamland.LostDreamlandExcel;
import cate.common.table.activity.lottery.LotteryExcel;
import cate.common.table.activity.luckybag.LuckyBagExcel;
import cate.common.table.activity.luckyblindbox.LuckyBlindBoxExcel;
import cate.common.table.activity.luckycharm.LuckyCharmExcel;
import cate.common.table.activity.magiccontract.MagicContractExcel;
import cate.common.table.activity.merge.cr.MergeContinuousRechargeExcel;
import cate.common.table.activity.merge.login.MergeLoginExcel;
import cate.common.table.activity.merge.sp.MergeServerProgressExcel;
import cate.common.table.activity.mooncake.MooncakeExcel;
import cate.common.table.activity.moonfight.MoonFightExcel;
import cate.common.table.activity.mtower.MTowerExcel;
import cate.common.table.activity.newlimitshop.NewLimitShopExcel;
import cate.common.table.activity.optionalgift.OptionalGiftExcel;
import cate.common.table.activity.puzzle.PuzzleExcel;
import cate.common.table.activity.rankactivity.RankActivityExcel;
import cate.common.table.activity.rebate.RebateExcel;
import cate.common.table.activity.restrictcall.RestrictCallExcel;
import cate.common.table.activity.sevendaytrial.SevenDayTrialExcel;
import cate.common.table.activity.skindraw.SkinDrawExcel;
import cate.common.table.activity.specall.SpeCallExcel;
import cate.common.table.activity.specialtraining.SevenDaySpecialTrainingExcel;
import cate.common.table.activity.spiceup.SpiceUpExcel;
import cate.common.table.activity.talentcustommade.TalentCustomMadeExcel;
import cate.common.table.activity.tangyuan.TangYuanExcel;
import cate.common.table.activity.taskactivity.TaskActivityExcel;
import cate.common.table.activity.tbboss.TBBossExcel;
import cate.common.table.activity.tendrawsoptions.TenDrawsOptionsExcel;
import cate.common.table.activity.throne.TBExcel;
import cate.common.table.activity.treasure.TreasureExcel;
import cate.common.table.activity.warorder.WarorderExcel;
import cate.common.table.activity.warordermini.WarOrderMiniExcel;
import cate.common.table.activity.weekcard.WeekCardExcel;
import cate.common.table.activity.weekendgift.WeekendGiftExcel;
import cate.common.table.activity.wishblessing.WishBlessingExcel;
import cate.common.table.activity.wishtower.WishTowerExcel;
import cate.common.table.activity.worldboss.WorldBossExcel;
import cate.common.table.activity.zonelimit.ZoneLimitExcel;
import cate.common.table.area.AreaExcel;
import cate.common.table.attr.AttrExcel;
import cate.common.table.call.CallExcel;
import cate.common.table.camp.CampAttrExcel;
import cate.common.table.chat.ChatExcel;
import cate.common.table.common.CommonExcel;
import cate.common.table.common.NameExcel;
import cate.common.table.conditiontask.ConditionExcel;
import cate.common.table.cross_boss.CrossBossFarmExcel;
import cate.common.table.dynins.DynInstanceExcel;
import cate.common.table.farm.adventure.AdventureExcel;
import cate.common.table.farm.config.FbBuyConfigExcel;
import cate.common.table.farm.dailyfb.DailyFbExcel;
import cate.common.table.farm.endless.EndlessExcel;
import cate.common.table.farm.fbchallenge.FbChallengeExcel;
import cate.common.table.farm.forbidden.ForbiddenExcel;
import cate.common.table.farm.island.IslandExcel;
import cate.common.table.farm.spicefb.SpiceFbExcel;
import cate.common.table.farm.tower.TowerExcel;
import cate.common.table.farm.udgpalace.UdgPalaceExcel;
import cate.common.table.fight.buff.BuffExcel;
import cate.common.table.fight.destiny.DestinyExcel;
import cate.common.table.fight.preview.FightPreviewExcel;
import cate.common.table.fight.scene.FightSceneExcel;
import cate.common.table.fight.skill.SkillExcel;
import cate.common.table.fight.test.FightTestExcel;
import cate.common.table.findback.FindBackExcel;
import cate.common.table.friendaid.FriendAidExcel;
import cate.common.table.guide.PlayerGuideExcel;
import cate.common.table.guild.GuildExcel;
import cate.common.table.guild.fairyland.GuildFairylandExcel;
import cate.common.table.guild.guildboss.GuildBossExcel;
import cate.common.table.guild.treasurehouse.GuildTreasureHouseExcel;
import cate.common.table.hallow.HallowExcel;
import cate.common.table.herodirectbuy.HeroDirectBuyExcel;
import cate.common.table.ins.InstanceExcel;
import cate.common.table.invite.InviteExcel;
import cate.common.table.item.ItemExcel;
import cate.common.table.item.awakenfairy.AwakenFairyExcel;
import cate.common.table.item.equip.EquipExcel;
import cate.common.table.item.fairy.FairyExcel;
import cate.common.table.item.favorability.FavorabilityExcel;
import cate.common.table.item.furniture.FurnitureExcel;
import cate.common.table.item.gem.GemExcel;
import cate.common.table.item.hero.HeroExcel;
import cate.common.table.item.inscription.InscriptionExcel;
import cate.common.table.item.kitchenware.KitchenwareExcel;
import cate.common.table.item.rune.RuneExcel;
import cate.common.table.item.spice.SpiceExcel;
import cate.common.table.item.staruptask.StarUpTaskExcel;
import cate.common.table.item.yoke.YokeExcel;
import cate.common.table.jungle.JungleExcel;
import cate.common.table.limitrecharge.LimitRechargeExcel;
import cate.common.table.limittimegift.LimitTimeGiftExcel;
import cate.common.table.mall.MallExcel;
import cate.common.table.pay.PayExcel;
import cate.common.table.position.PositionExcel;
import cate.common.table.pvp.arena.ArenaExcel;
import cate.common.table.pvp.championrace.ChampionRaceExcel;
import cate.common.table.pvp.eliterace.EliteRaceExcel;
import cate.common.table.pvp.extra.PvpRankPointExtraExcel;
import cate.common.table.pvp.gradepvp.GradePvpExcel;
import cate.common.table.pvp.guildwar.GuildWarExcel;
import cate.common.table.pvp.ladder.LadderExcel;
import cate.common.table.pvp.minecraft.MinecraftExcel;
import cate.common.table.pvp.pointrace.PointRaceExcel;
import cate.common.table.pvp.teampvp.TeamPvpExcel;
import cate.common.table.rank.RankExcel;
import cate.common.table.res.achievement.AchievementExcel;
import cate.common.table.res.adventuretask.AdventureTaskExcel;
import cate.common.table.res.channelgift.ChannelGiftExcel;
import cate.common.table.res.compose.ComposeExcel;
import cate.common.table.res.crystalldraw.CrystallDrawExcel;
import cate.common.table.res.drop.DropExcel;
import cate.common.table.res.eathero.EatHeroExcel;
import cate.common.table.res.farm.FarmExcel;
import cate.common.table.res.formations.FormationsExcel;
import cate.common.table.res.furniturecall.FurnitureCallExcel;
import cate.common.table.res.godstreet.GodStreetExcel;
import cate.common.table.res.goldmall.GoldMallExcel;
import cate.common.table.res.hero.back.HeroBackExcel;
import cate.common.table.res.hero.inherit.HeroInheritExcel;
import cate.common.table.res.hero.introduction.HeroIntroductionExcel;
import cate.common.table.res.hero.sacrifice.SacrificeExcel;
import cate.common.table.res.hoard.HoardExcel;
import cate.common.table.res.holy_pet.HolyPetExcel;
import cate.common.table.res.lubiitem.LubiItemExcel;
import cate.common.table.res.racebadge.RaceBadgeExcel;
import cate.common.table.res.revelry.RevelryExcel;
import cate.common.table.res.sign.ActDailySignExcel;
import cate.common.table.res.treasureturntable.TreasureTurntableExcel;
import cate.common.table.res.watchadvertisement.AdvertisementExcel;
import cate.common.table.res.worldtree.WorldTreeExcel;
import cate.common.table.role.RoleExcel;
import cate.common.table.role.vip.VipExcel;
import cate.common.table.show.BlogExcel;
import cate.common.table.show.heroskin.HeroSkinExcel;
import cate.common.table.task.TaskExcel;
import cate.common.table.task.functasks.FuncOpenTasksExcel;
import cate.common.table.text.TextExcel;
import cate.common.table.throne.sacrifice.KingSacrificeExcel;
import cate.common.table.trademall.TradeMallExcel;
import easy.java.dev.note.NoteField;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.stream.Stream;

/**
 * 配置表管理
 */
@Slf4j
public class TableManager {

    public static TableManager instance = new TableManager();
    @NoteField("物品")
    public ItemExcel item = new ItemExcel();
    @NoteField("主角")
    public RoleExcel role = new RoleExcel();
    @NoteField("支付")
    public PayExcel pay = new PayExcel();
    @NoteField("通用")
    public CommonExcel common = new CommonExcel();
    @NoteField("英雄")
    public HeroExcel hero = new HeroExcel();
    @NoteField("英雄升星-升星任务")
    public StarUpTaskExcel starUpTask = new StarUpTaskExcel();
    @NoteField("技能")
    public SkillExcel skill = new SkillExcel();
    @NoteField("buff")
    public BuffExcel buff = new BuffExcel();
    @NoteField("情报任务")
    public AdventureTaskExcel adventureTask = new AdventureTaskExcel();
    @NoteField("战斗测试")
    public FightTestExcel fightTest = new FightTestExcel();
    @NoteField("战斗场景配置")
    public FightSceneExcel fightScene = new FightSceneExcel();
    @NoteField("战斗预览")
    public FightPreviewExcel fightPreview = new FightPreviewExcel();
    @NoteField("副本购买")
    public FbBuyConfigExcel fbBuy = new FbBuyConfigExcel();
    @NoteField("英雄召唤")
    public CallExcel call = new CallExcel();
    @NoteField("布阵")
    public PositionExcel position = new PositionExcel();
    @NoteField("英雄献祭")
    public SacrificeExcel sacrifice = new SacrificeExcel();
    @NoteField("阵营属性")
    public CampAttrExcel campAttr = new CampAttrExcel();
    @NoteField(value = "商城")
    public MallExcel mall = new MallExcel();
    @NoteField(value = "装备")
    public EquipExcel equip = new EquipExcel();
    @NoteField(value = "聊天")
    public ChatExcel chat = new ChatExcel();
    @NoteField(value = "实例")
    public InstanceExcel ins = new InstanceExcel();
    @NoteField(value = "动态实例")
    public DynInstanceExcel dynIns = new DynInstanceExcel();
    @NoteField(value = "属性")
    public AttrExcel attr = new AttrExcel();
    @NoteField(value = "主线")
    public AdventureExcel adventure = new AdventureExcel();
    @NoteField(value = "系统文本")
    public TextExcel text = new TextExcel();
    @NoteField(value = "寻宝转盘f")
    public TreasureTurntableExcel treasureTurntable = new TreasureTurntableExcel();
    @NoteField(value = "英雄回退")
    public HeroBackExcel heroBack = new HeroBackExcel();
    public HeroInheritExcel heroInherit = new HeroInheritExcel();
    @NoteField(value = "世界之树")
    public WorldTreeExcel worldTree = new WorldTreeExcel();
    @NoteField(value = "掉落配置")
    public DropExcel drop = new DropExcel();
    @NoteField(value = "灵器")
    public FairyExcel fairy = new FairyExcel();
    @NoteField(value = "徽章")
    public RuneExcel rune = new RuneExcel();
    @NoteField(value = "英雄图鉴")
    public HeroIntroductionExcel heroIntroduction = new HeroIntroductionExcel();
    @NoteField(value = "族徽")
    public RaceBadgeExcel raceBadge = new RaceBadgeExcel();
    @NoteField(value = "手办")
    public FurnitureExcel furniture = new FurnitureExcel();
    @NoteField(value = "手办全屋定制")
    public FurnitureCallExcel furnitureCall = new FurnitureCallExcel();
    @NoteField(value = "星格")
    public SpiceExcel spice = new SpiceExcel();
    @NoteField(value = "协会")
    public GuildExcel guild = new GuildExcel();
    @NoteField(value = "协会Boss")
    public GuildBossExcel guildBoss = new GuildBossExcel();
    @NoteField(value = "协会宝库")
    public GuildTreasureHouseExcel guildTreasureHouse = new GuildTreasureHouseExcel();
    @NoteField(value = "美食神殿")
    public TowerExcel tower = new TowerExcel();
    @NoteField(value = "无尽轮回")
    public EndlessExcel endless = new EndlessExcel();
    @NoteField(value = "积分赛")
    public PointRaceExcel pointRace = new PointRaceExcel();
    @NoteField(value = "迷失神庙")
    public IslandExcel island = new IslandExcel();
    @NoteField(value = "水晶峡谷")
    public SpiceFbExcel spiceFb = new SpiceFbExcel();
    @NoteField(value = "活动基础")
    public ActivityExcel activity = new ActivityExcel();
    @NoteField(value = "战令")
    public WarorderExcel warorder = new WarorderExcel();
    @NoteField(value = "排行榜")
    public RankExcel rank = new RankExcel();
    @NoteField(value = "任务")
    public TaskExcel task = new TaskExcel();
    @NoteField(value = "日常副本")
    public DailyFbExcel dailyFb = new DailyFbExcel();
    @NoteField(value = "精英赛")
    public EliteRaceExcel eliteRace = new EliteRaceExcel();
    @NoteField("每日签到")
    public ActDailySignExcel signDaily = new ActDailySignExcel();
    @NoteField("个人空间")
    public BlogExcel blog = new BlogExcel();
    @NoteField("英雄时装")
    public HeroSkinExcel heroSkin = new HeroSkinExcel();
    @NoteField("vip特权")
    public VipExcel vip = new VipExcel();
    @NoteField("交易坊")
    public TradeMallExcel tradeMall = new TradeMallExcel();
    @NoteField("种族禁地")
    public ForbiddenExcel forbidden = new ForbiddenExcel();
    @NoteField("庙街食神记")
    public BattleRoyaleExcel battleRoyale = new BattleRoyaleExcel();
    @NoteField("省市地区")
    public AreaExcel area = new AreaExcel();
    @NoteField("超值首充")
    public SuperFirstPayExcel firstPay = new SuperFirstPayExcel();
    @NoteField("食神之路")
    public GodStreetExcel godStreet = new GodStreetExcel();
    @NoteField("关卡挑战条件")
    public FbChallengeExcel fbChallenge = new FbChallengeExcel();
    @NoteField("任务活动")
    public TaskActivityExcel taskActivity = new TaskActivityExcel();
    @NoteField("七日之约")
    public SevenDayLoginActivityExcel sevenDayLoginActivity = new SevenDayLoginActivityExcel();
    @NoteField("达成条件")
    public ConditionExcel conditionTask = new ConditionExcel();
    @NoteField("七日特训")
    public SevenDaySpecialTrainingExcel sevenDaySpecialTrainingExcel = new SevenDaySpecialTrainingExcel();
    @NoteField("新手引导")
    public PlayerGuideExcel guide = new PlayerGuideExcel();
    @NoteField("限时礼包")
    public LimitTimeGiftExcel limitGift = new LimitTimeGiftExcel();
    @NoteField("限时兑换活动")
    public HangDropActivityExcel hangDropActivity = new HangDropActivityExcel();
    @NoteField("英雄上新")
    public HeroUpExcel heroUp = new HeroUpExcel();
    @NoteField("名字库")
    public NameExcel name = new NameExcel();
    @NoteField("储金返利")
    public RebateExcel rebate = new RebateExcel();
    @NoteField("金币商店")
    public GoldMallExcel goldMall = new GoldMallExcel();
    @NoteField("每日特惠")
    public DailyGiftExcel dailyGift = new DailyGiftExcel();
    @NoteField("排行榜活动")
    public RankActivityExcel rankActivity = new RankActivityExcel();
    @NoteField("跨服排行榜活动")
    public CrossRankActivityExcel crossRankActivity = new CrossRankActivityExcel();
    @NoteField("升星豪礼")
    public CommonStarUpExcel commonStarUp = new CommonStarUpExcel();
    @NoteField("定制成长礼包")
    public CustomGrowthExcel customGrowth = new CustomGrowthExcel();
    @NoteField("限时商店活动")
    public LimitShopActivityExcel limitShopActivity = new LimitShopActivityExcel();
    @NoteField("每日充值")
    public DailyRechargeExcel dailyRecharge = new DailyRechargeExcel();
    @NoteField("限时回退")
    public LimitBackExcel limitBack = new LimitBackExcel();

    @NoteField("天梯")
    public LadderExcel ladder = new LadderExcel();
    @NoteField("限定召唤")
    public RestrictCallExcel restrictCall = new RestrictCallExcel();
    @NoteField("周卡")
    public WeekCardExcel weekCard = new WeekCardExcel();
    @NoteField("矿洞争霸")
    public MinecraftExcel minecraft = new MinecraftExcel();
    @NoteField("全服限购")
    public ZoneLimitExcel zoneLimit = new ZoneLimitExcel();
    @NoteField("渠道礼包")
    public ChannelGiftExcel channelGift = new ChannelGiftExcel();
    @NoteField("宝石")
    public GemExcel gem = new GemExcel();
    @NoteField("英雄好感度")
    public FavorabilityExcel favorability = new FavorabilityExcel();
    @NoteField("合成")
    public ComposeExcel compose = new ComposeExcel();
    @NoteField("合服连续充值")
    public MergeContinuousRechargeExcel mergeCR = new MergeContinuousRechargeExcel();
    @NoteField("合服登录活动")
    public MergeLoginExcel mergeLogin = new MergeLoginExcel();
    @NoteField("合服全服目标")
    public MergeServerProgressExcel mergeSP = new MergeServerProgressExcel();
    @NoteField("资源找回")
    public FindBackExcel findBack = new FindBackExcel();
    @NoteField("连续充值")
    public ContinuousRechargeExcel continuousRecharge = new ContinuousRechargeExcel();
    @NoteField("注灵")
    public EatHeroExcel eatHero = new EatHeroExcel();
    @NoteField("灵器置换")
    public FairyReplaceExcel fairyReplace = new FairyReplaceExcel();
    @NoteField("新限时商店")
    public NewLimitShopExcel limitShopNew = new NewLimitShopExcel();
    @NoteField("独立卡池召唤")
    public SpeCallExcel speCall = new SpeCallExcel();
    @NoteField("全民挂机")
    public AllOnHookExcel allOnHook = new AllOnHookExcel();
    @NoteField("铭文")
    public InscriptionExcel inscription = new InscriptionExcel();
    @NoteField("食灵置换")
    public HeroReplaceExcel heroReplace = new HeroReplaceExcel();
    @NoteField("英雄试炼")
    public HeroTrialExcel heroTrial = new HeroTrialExcel();
    @NoteField("免费置换")
    public FreeReplaceExcel freeReplace = new FreeReplaceExcel();
    @NoteField("好友援助")
    public FriendAidExcel friendAid = new FriendAidExcel();
    @NoteField("食灵赐福")
    public BlessingExcel blessing = new BlessingExcel();
    @NoteField("功能开启后连续引导任务")
    public FuncOpenTasksExcel funcTask = new FuncOpenTasksExcel();
    @NoteField("拼图活动")
    public PuzzleExcel puzzle = new PuzzleExcel();
    @NoteField("小战令")
    public WarOrderMiniExcel warOrderMini = new WarOrderMiniExcel();
    @NoteField("天赋自选")
    public TalentCustomMadeExcel talentCM = new TalentCustomMadeExcel();
    @NoteField("累充返利")
    public AccumulativePayExcel accumulativePay = new AccumulativePayExcel();

    @NoteField("汤圆活动")
    public TangYuanExcel tangYuan = new TangYuanExcel();
    @NoteField("灵器特惠")
    public FairyGiftExcel fairyGift = new FairyGiftExcel();
    @NoteField("天命")
    public DestinyExcel destiny = new DestinyExcel();
    @NoteField("圣器")
    public HallowExcel hallow = new HallowExcel();
    @NoteField("十连自选")
    public TenDrawsOptionsExcel tenDraws = new TenDrawsOptionsExcel();
    @NoteField("地宫探险")
    public UdgPalaceExcel udgPalace = new UdgPalaceExcel();
    @NoteField("自选礼包")
    public OptionalGiftExcel optionalGift = new OptionalGiftExcel();
    @NoteField("限时累充")
    public LimitRechargeExcel limitRecharge = new LimitRechargeExcel();
    @NoteField("农场")
    public FarmExcel farm = new FarmExcel();
    @NoteField("英雄兑换")
    public ConvertHeroExcel convertHero = new ConvertHeroExcel();
    @NoteField("好运盲盒")
    public LuckyBlindBoxExcel blindBox = new LuckyBlindBoxExcel();
    @NoteField("砸金蛋")
    public GoldEggExcel goldEgg = new GoldEggExcel();
    @NoteField("水晶珍藏")
    public CrystallDrawExcel crystallDraw = new CrystallDrawExcel();
    @NoteField("阵法")
    public FormationsExcel formations = new FormationsExcel();

    @NoteField("英雄羁绊")
    public YokeExcel yoke = new YokeExcel();
    @NoteField("跨服擂台赛")
    public ArenaExcel arena = new ArenaExcel();

    @NoteField("英雄直购")
    public HeroDirectBuyExcel heroDirectBuy = new HeroDirectBuyExcel();
    @NoteField("神装寻宝")
    public GodEquipExcel godEquip = new GodEquipExcel();
    @NoteField("灵界奇遇录")
    public AchievementExcel achievement = new AchievementExcel();
    @NoteField("公会秘境")
    public GuildFairylandExcel guildFairyland = new GuildFairylandExcel();
    @NoteField("世界BOSS")
    public WorldBossExcel worldBoss = new WorldBossExcel();
    @NoteField("幸运福袋")
    public LuckyBagExcel luckyBag = new LuckyBagExcel();
    @NoteField("英雄之路")
    public HeroRoadExcel heroRoad = new HeroRoadExcel();
    @NoteField("公会战")
    public GuildWarExcel guildWar = new GuildWarExcel();
    @NoteField("跨服BOSS")
    public CrossBossFarmExcel crossBossFarm = new CrossBossFarmExcel();
    @NoteField("跨服冠军赛")
    public ChampionRaceExcel championRace = new ChampionRaceExcel();
    @NoteField("聚宝盆")
    public DiamondBowlExcel diamondBowl = new DiamondBowlExcel();
    @NoteField("聚宝盆")
    public LostDreamlandExcel lostDreamland = new LostDreamlandExcel();
    @NoteField("觉醒神树")
    public GodTreeExcel godTree = new GodTreeExcel();
    @NoteField("食神降临")
    public FoodGodExcel foodGod = new FoodGodExcel();
    @NoteField("觉醒灵器")
    public AwakenFairyExcel awakenFairy = new AwakenFairyExcel();
    @NoteField("天机阁")
    public LotteryExcel lottery = new LotteryExcel();
    @NoteField("厨具")
    public KitchenwareExcel kitchenware = new KitchenwareExcel();
    @NoteField("丛林冒险")
    public JungleExcel jungle = new JungleExcel();
    @NoteField("鉴宝行")
    public CutStoneExcel cutStone = new CutStoneExcel();
    @NoteField("灵王祭祀")
    public KingSacrificeExcel kingSacrifice = new KingSacrificeExcel();
    @NoteField("王座争霸")
    public TBExcel throne = new TBExcel();
    @NoteField("命运之扉")
    public DestinyGateExcel destinyGate = new DestinyGateExcel();
    @NoteField("灵契")
    public MagicContractExcel magicContract = new MagicContractExcel();
    @NoteField("皮肤抽奖")
    public SkinDrawExcel skinDraw = new SkinDrawExcel();
    @NoteField("邀请")
    public InviteExcel invite = new InviteExcel();
    @NoteField("星格up")
    public SpiceUpExcel spiceUp = new SpiceUpExcel();
    @NoteField("全服段位赛")
    public GradePvpExcel gradePvp = new GradePvpExcel();
    @NoteField("组队竞技")
    public TeamPvpExcel teamPvp = new TeamPvpExcel();
    @NoteField("广告")
    public AdvertisementExcel advertisement = new AdvertisementExcel();
    @NoteField("灵宠")
    public HolyPetExcel holyPet = new HolyPetExcel();
    @NoteField("灵王试炼")
    public TBBossExcel tbBoss = new TBBossExcel();
    @NoteField("禁用英雄")
    public WishBlessingExcel wishBlessing = new WishBlessingExcel();
    @NoteField("月饼大作战")
    public MooncakeExcel mooncake = new MooncakeExcel();
    @NoteField("PVP排行积分加成")
    public PvpRankPointExtraExcel pvpRankPointExtra = new PvpRankPointExtraExcel();
    @NoteField("鲁比的宝贝")
    public LubiItemExcel lubiItem = new LubiItemExcel();

    @NoteField("鲁比的宝藏")
    public TreasureExcel treasure = new TreasureExcel();

    @NoteField("百抽狂欢")
    public RevelryExcel revelry = new RevelryExcel();

    @NoteField("周末献礼")
    public WeekendGiftExcel weekendGift = new WeekendGiftExcel();
    public CustomWarorderExcel customWarorder = new CustomWarorderExcel();

    @NoteField("BOSS试炼")
    public BossTrainExcel bossTrain = new BossTrainExcel();

    @NoteField("魔塔挑战")
    public MTowerExcel mTower = new MTowerExcel();

    @NoteField("累天充值")
    public AccumulateDayPayExcel accumulateDayPay = new AccumulateDayPayExcel();
    public WishTowerExcel wishTower = new WishTowerExcel();

    @NoteField("七日试炼")
    public SevenDayTrialExcel sevenDayTrial = new SevenDayTrialExcel();

    public MoonFightExcel moonFight = new MoonFightExcel();

    @NoteField("灵界秘藏")
    public HoardExcel hoard = new HoardExcel();
    @NoteField("天降锦鲤")
    public LuckyCharmExcel luckyCharm = new LuckyCharmExcel();

    private String excelPath;
    private String excelMode;

    protected TableManager() {
    }

    public EExcel[] getExcels() {
        return new EExcel[]{item, pay, common, chat, fbBuy, role, hero, skill, buff, fightTest, fightScene, fightPreview, position, sacrifice, campAttr, mall, equip, ins, dynIns, attr, adventure, text,
                treasureTurntable, heroBack, worldTree, drop, fairy, rune, heroIntroduction, call, raceBadge, furniture, furnitureCall,
                spice, tower, pointRace, guild, guildBoss, island, spiceFb, rank, activity, warorder, adventureTask, task, eliteRace, dailyFb,
                signDaily, blog, vip, tradeMall, battleRoyale, area, firstPay, forbidden, godStreet, fbChallenge, taskActivity, sevenDayLoginActivity,
                sevenDaySpecialTrainingExcel, conditionTask, guide, limitGift, hangDropActivity, heroUp, rebate, name, dailyGift, rankActivity, crossRankActivity, limitShopActivity,
                dailyRecharge, commonStarUp, restrictCall, ladder, weekCard, zoneLimit,
                channelGift, gem, favorability, mergeCR, mergeLogin, mergeSP, compose, findBack, continuousRecharge, eatHero,
                fairyReplace, limitShopNew, inscription, allOnHook, speCall, heroReplace, heroTrial, freeReplace, blessing, friendAid, funcTask, puzzle, warOrderMini, talentCM,
                accumulativePay, tangYuan, fairyGift, destiny, endless, goldMall, tenDraws, heroInherit, hallow, limitBack, udgPalace, optionalGift, limitRecharge, starUpTask, convertHero, blindBox, goldEgg, crystallDraw,
                yoke, formations, farm, minecraft, arena, guildTreasureHouse, heroDirectBuy, godEquip, achievement, guildFairyland, worldBoss, customGrowth, luckyBag, heroRoad, guildWar, crossBossFarm, championRace,
                diamondBowl, lostDreamland, godTree, foodGod, awakenFairy, lottery, kitchenware, cutStone, kingSacrifice, heroSkin, throne, jungle, destinyGate, magicContract,
                skinDraw, invite, spiceUp, gradePvp, teamPvp, advertisement, holyPet, tbBoss, wishBlessing, mooncake, pvpRankPointExtra, treasure, lubiItem, revelry, weekendGift, customWarorder, bossTrain,
                mTower, accumulateDayPay, wishTower, sevenDayTrial, moonFight, hoard, luckyCharm
        };
    }

    public boolean setup(String excelPath, String excelMode) {
        return setup(excelPath, excelMode, true);
    }

    /**
     * @return setup success?
     */
    public boolean setup(String excelPath, String excelMode, boolean decode) {
        this.excelPath = excelPath;
        this.excelMode = excelMode;
        EContext ctx = new GameTableContext(excelPath, excelMode);
        long beginTime = System.currentTimeMillis();
        int notExistNum = (int) Stream.of(getExcels()).parallel().filter(e -> {
            e.setContext(ctx);
            return !e.load();
        }).count();
        if (notExistNum > getExcels().length >> 1) {
            return false;
        }
        if (decode) {
            for (EExcel excel : getExcels()) {
                excel.decode();
            }
        }
        long costTime = System.currentTimeMillis() - beginTime;
        log.info("读表总耗时 {} ms", costTime);
        return true;
    }

    public void reload(String excelName) {
        EContext ctx = new GameTableContext(excelPath, excelMode);
        for (EExcel excel : getExcels()) {
            if (StringUtils.isBlank(excelName) || StringUtils.equals(excelName, excel.getFileName())) {
                excel.setContext(ctx);
                excel.load();
            }
        }
        for (EExcel excel : getExcels()) {
            if (StringUtils.isBlank(excelName) || StringUtils.equals(excelName, excel.getFileName())) {
                excel.decode();
            }
        }
    }

}
